package code.jvm.c7heap;


/**
 * 1. 设置堆空间大小的参数
 * -Xms 用来设置堆空间（新生代 + 老年代）的初始内存大小
 * -X 是 JVM的运行参数
 * ms 是 memory start
 * -Xmx 用来设置堆空间（新生代 + 老年代）的最大内存大小
 * <p><p/>
 * 2. 默认堆空间的大小：
 * 初始内存大小：物理电脑内存大小 1/64
 * 最大内存大小：物理电脑内存大小 1/4
 * 3. 手动设置： -Xms600m -Xmx600m
 * 开发中建议将初始堆内存和最大的堆内存设置成相同的值
 * <p><p/>
 * 4. 查看设置的参数：方式一：jsp/jstat -gc 进程 id
 * 方式二：-XX：PrintGCDetails
 *
 *
 */
public class HeapSpaceInitial {
    public static void main(String[] args) {
        // 返回 JVM 中的堆内存总量
        long initailMemory = Runtime.getRuntime()
                .totalMemory() / 1024 /1024;
        // 返回 JVM 试图
        long maxMemory = Runtime.getRuntime()
                .maxMemory() / 1024 /1024 ;
        System.out.println("-Xms : " + initailMemory + "M");
        System.out.println("-Xmx : " + maxMemory + "M");
        System.out.println("系统内存大小为 : " + initailMemory  * 64.0 / 1024 + "G");
        System.out.println("系统内存大小为 : " + maxMemory  * 4.0 / 1024 + "G");
        try{
            Thread.sleep(1000000);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}